package com.dyna.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dyna.foundation.domain.entity.SysMenu;
import com.dyna.foundation.domain.form.SysMenuSaveForm;
import com.dyna.foundation.domain.req.SysMenuListReq;

import java.util.List;

/**
* @author zhoucaiwng
*/
public interface SysMenuService extends IService<SysMenu> {

    /**
     * 创建菜单
     *
     * @param createReqVO 菜单信息
     * @return 创建出来的菜单编号
     */
    Long createMenu(SysMenuSaveForm createReqVO);

    /**
     * 更新菜单
     *
     * @param updateReqVO 菜单信息
     */
    void updateMenu(SysMenuSaveForm updateReqVO);

    /**
     * 删除菜单
     *
     * @param id 菜单编号
     */
    void deleteMenu(Long id);

    /**
     * 根据角色id获取菜单列表
     * @param roleList 角色列表
     * @return List<SysMenu>
     */
    List<SysMenu> getSysMenuListByRoleIds(List<Long> roleList);

    /**
     * 获得所有菜单列表
     *
     * @return 菜单列表
     */
    List<SysMenu> getMenuList();

    /**
     * 筛选菜单列表
     *
     * @param reqVO 筛选条件请求 VO
     * @return 菜单列表
     */
    List<SysMenu> getMenuList(SysMenuListReq reqVO);


    List<SysMenu> filterDisableMenus(List<SysMenu> list);

    /**
     * 获得菜单
     *
     * @param id 菜单编号
     * @return 菜单
     */
    SysMenu getMenu(Long id);

}
